perm filename LPIG[EKL,SYS] blob
sn#820216 filedate 1986-07-07 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00005 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 second application: the case of lists of numbers
C00003 00003 Disjointness
C00006 00004 lemma into_mult
C00007 00005 the main result for perm
C00009 ENDMK
C⊗;
;second application: the case of lists of numbers
(wipe-out)
(get-proofs pigeon prf ekl sys)
(proof lpig)
(axiom |∀n m.(un((λxv.mkset xv),n))(m)⊃m<n|)
(label dn1)
;Lemma disjoint_number:
(axiom |∀n.disjoint(λxv.mkset xv,n)|)
(label disjoint_number)
(axiom |∀u.into(u)∧(∀k.k<length u⊃1=mult(u,mkset(k)))⊃
(∀i.i<length u⊃1=mult(u,mkset(nth(u,i))))|)
(label into_mult)
;Theorem
;∀U.PERM(U)⊃INJ(U)
;perm injectvity
(save-proofs lpig)
;Disjointness
(proof disjoint_number)
;lemma dn1
1. (ue (a |λn.∀m.(un((λxv.mkset(xv)),n))(m)⊃m<n|)
proof_by_induction
(part 1(open mkset un emptyset union))
(use normal mode: always)
(use successor1 transitivity_of_order))
;∀N M.(UN(λXV.MKSET(XV),N))(M)⊃M<N
;LEMMA
;∀N M.(UN(λXV.(λX.X=XV),N))(M)⊃M<N
;if a number M belongs to the set ∪({I})I<N, then I is less than N....
;lemma disjoint number
2. (ue ((n.n)(m.n)) dn1 irreflexivity_of_order)
;¬(UN(λXV.MKSET(XV),N))(N)
3. (trw |(un(λyv.mkset(yv),n))(xv)∧(mkset(n))(xv)| * (part 2(open mkset)))
;¬((UN(λYV.MKSET(YV),N))(XV)∧(MKSET(N))(XV))
4. (ue (a |λn.disjoint(λxv.mkset(xv),n)|) proof_by_induction
(open disjoint disj_pair emptyp intersection)
(use * mode: exact))
;∀N.DISJOINT(λXV.MKSET(XV),N)
;LEMMA
;∀N.DISJOINT(λXV.MKSET(XV),N)
;...Therefore ∪({I})I<N and {N} have empty intersection and so, by induction on N
;∪({I})I<N is DISJOINT.
;;;;;;;;;;
;Exercise: Prove the converse of DN1:
;UN(λXV.(λX.X=XV),N)=(λXV.XV<N)
;(rw less_succ_lesseq (open lesseq))
;∀N M.M<N'≡M=N∨M<N
;(ue (a |λn.∀m.m<n⊃(un(λxv.(λx.x=xv),n))(m)|) proof_by_induction (open un union)
; (use * mode: exact) (use normal mode: always))
;∀N M.M<N⊃(UN(λXV.(λX.X=XV),N))(M)
;(label dn3)
;(derive |∀n m.(un(λxv.(λx.x=xv),n))(m)≡(λxv.xv<n)(m)| (dn1 dn3))
;(ue ((a.|un(λxv.λx.x=xv,n)|)(b.|λxv.xv<n|)) set_extensionality * (open epsilon))
;UN(λXV.(λX.X=XV),N)=(λXV.XV<N)
;lemma into_mult
(proof into_mult)
1. (assume |into(u)|)
(label im1)
2. (assume |∀k.k<length u⊃1=mult(u,mkset k)|)
(label im2)
3. (assume |i<length u|)
(label im3)
4. (rw im1 (open into))
;∀N.N<LENGTH U⊃NATNUM(NTH(U,N))∧NTH(U,N)<LENGTH U
;deps: (IM1)
5. (ue (k |nth(u,i)|) im2 (use im3 * mode: exact))
;1=MULT(U,MKSET(NTH(U,I)))
;deps: (IM1 IM2 IM3)
6. (ci im3)
;I<LENGTH U⊃1=MULT(U,MKSET(NTH(U,I)))
;deps: (IM1 IM2)
7. (ci (im1 im2))
;INTO(U)∧(∀K.K<LENGTH U⊃1=MULT(U,MKSET(K)))⊃
;(I<LENGTH U⊃1=MULT(U,MKSET(NTH(U,I))))
;the main result for perm
;a straightforward application of pigeon hole to onto lists
(proof perm_inj)
;∀U.PERM(U)⊃INJ(U)
1. (assume |perm u|)
(label perm_inj1)
2. (rw * (open perm onto))
;INTO(U)∧(∀N.N<LENGTH U⊃MEMBER(N,U))
(label perm_inj2)
;labels: MEMBER_MULT
;(AXIOM |∀U Y A.MEMBER(Y,U)∧A(Y)⊃1≤MULT(U,A)|)
3. (ue ((u.u)(y.n)(a.|mkset n|)) member_mult
(part 1(open mkset)))
;MEMBER(N,U)⊃1≤MULT(U,MKSET(N))
4. (derive |∀n.n<length u⊃1≤mult(u,mkset n)| (perm_inj2 *))
(label onto_mult)(label perm_inj3)
;deps: (PERM_INJ1)
5. (ue ((setseq.|λxv.mkset(xv)|)(u.u)) pigeonlist disjoint_number perm_inj3)
;∀K.K<LENGTH U⊃1=MULT(U,MKSET(K))
(label perm_inj4)
;deps: (PERM_INJ1)
;labels: INTO_MULT
;∀U.INTO(U)∧(∀K.K<LENGTH U⊃1=MULT(U,MKSET(K)))⊃
; (∀I.I<LENGTH U⊃1=MULT(U,MKSET(NTH(U,I))))
6. (derive |∀i.i<length u⊃1=mult(u,mkset(nth(u,i)))| (into_mult perm_inj2 *))
;deps: (PERM_INJ1)
;labels: MULT_INJ
;∀V.(∀K.K<LENGTH V⊃MULT(V,MKSET(NTH(V,K)))=1)⊃INJ(V)
7. (ue (v u) mult_inj *)
;INJ(U)
;deps: (PERM_INJ1)
8. (ci perm_inj1)
;PERM(U)⊃INJ(U)
(label perm_injectvity)